Telegram Group Search
Awesome-Avalonia PRs Welcome

Коллекция полезных библиотек и инструментов для проекта Avalonia включает в себя множество полезных ресурсов.

Если вы работаете с кроссплатформенным XAML-фреймворком для экосистемы .NET, то репозиторий awesome-avalonia заслуживает вашего внимания. Он содержит множество полезной информации и будет отличным дополнением к вашим закладкам.

GitHub
⚡️ Сможет ли Blazor превзойти React/Angular?

Очень интересное обсуждение на Reddit от новичка в .NET-разработке. Комментаторы считают, что Blazor учить легче, но в то же время он не развивается так быстро как популярные JavaScript-фреймворки.

Делитесь своими мыслями в комментариях

@csharp_1001_notes
Обновление в .NET Smart Components

.NET Smart Components теперь доступны на GitHub! Эти AI-ориентированные компоненты облегчают интеграцию умных функций в ваши приложения. Ознакомьтесь с кодом, документацией и примерами, чтобы начать использовать AI в своих проектах, и делитесь своими идеями на GitHub.

Подробности: https://devblogs.microsoft.com/dotnet/join-the-dotnet-smart-components-ecosystem/

#en
🖥 Малоизвестная функция C#: Caller Information

❗️ Функциональность Caller Information позволяет передавать в метод информацию о вызывающем его коде, например:

- Имя файла
- Номер строки в файле
- Имя вызывающего метода

🌟 Эта особенность может быть крайне полезной для логирования, отладки и тестирования кода. Хотя она существует с версии C# 5.0, о ней часто забывают.

Как это работает?

💡 Для получения информации о вызывающем методе используются специальные атрибуты:

🌟 [CallerFilePath] — возвращает полный путь к исходному файлу, в котором был вызван метод.
🌟 [CallerLineNumber] — возвращает номер строки в файле, где был вызван метод.
🌟 [CallerMemberName] — возвращает имя метода или свойства, из которого был вызван метод.

🔍 Пример использования

Предположим, у нас есть метод Log, который записывает сообщение в консоль вместе с информацией о вызове:


using System;
using System.Runtime.CompilerServices;

class Program
{
static void Main()
{
TestMethod();
}

static void TestMethod()
{
Log("Это тестовое сообщение");
}

static void Log(string message,
[CallerFilePath] string filePath = "",
[CallerLineNumber] int lineNumber = 0,
[CallerMemberName] string memberName = "")
{
Console.WriteLine($"Сообщение: {message}");
Console.WriteLine($"Файл: {filePath}");
Console.WriteLine($"Метод: {memberName}");
Console.WriteLine($"Строка: {lineNumber}");
}
}


🔍 Вывод:


Файл: C:\Users\...\Program.cs
Метод: TestMethod
Строка: 11


💡 Применение:

🌟 Логирование — автоматическое добавление контекста при записи логов.
🌟 Отладка — упрощение поиска ошибок, так как можно сразу определить файл, метод и строку.
🌟 Анализ производительности — отслеживание производительности конкретных методов.
🌟 Асинхронные вызовы — идентификация методов в асинхронных цепочках вызовов.

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Serilog — Это библиотека для структурированного логирования, которая позволяет гибко настраивать вывод логов в разных форматах (текст, JSON и др.). Serilog поддерживает множество синков (каналов для записи логов), таких как консоль, файлы, базы данных и различные облачные сервисы. Библиотека упрощает мониторинг и отладку приложений, позволяя анализировать лог-файлы для выявления ошибок и потенциальных проблем

🌟 Если вам нужно легкое и настраиваемое логирование в .NET проектах, Serilog будет отличным выбором

🔐 Лицензия: Apache 2.0

▪️Github

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 А вы знали, что INumber<T> — это встроенный способ ограничить дженерики только числовыми типами?

🌟 Этот способ появился довольно давно, начиная с dotnet 7!

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 UUID (Guid в C#) широко используются в качестве уникальных идентификаторов в базах данных. UUID являются случайными, что делает их популярными в распределенных системах

❗️ Однако у UUID есть некоторые недостатки:

🌟 UUID замедляют вставки в базу данных. Каждая вставка должна обновлять кластеризованный индекс, дерево B+. Поскольку UUID являются случайными, это дорогостоящая операция, так как она требует повторной балансировки дерева. Фрагментация индекса также высока (это плохо)

🌟 Более высокие затраты на хранение. Длина UUID составляет 128 бит, а если хранить его в виде строки в удобном для чтения формате, то он становится еще больше

💡 Эти недостатки можно исправить с ULID. Он также 128-битный, поэтому совместим с UUID. Однако, в отличие от UUID, ULID можно сортировать. Первые 40 бит ULID представляют собой временную метку, что делает ULID монотонно увеличивающимися.

🌟 Существует пакет .NET, реализующий спецификацию ULID, поэтому вы можете начать использовать его немедленно!

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Включение функций без повторного развёртывания приложения

❗️ Используйте Feature Flags!

💡 Флаги функций в .NET позволяют динамически включать или отключать определённые функциональные возможности приложения во время выполнения, что упрощает управление поведением системы без необходимости развёртывания новой версии.

🔍 Основные концепции:

🌟 Флаги функций: Переключатели, управляющие включением или отключением определённых функций

🌟 Управление флагами: В .NET 8 появился встроенный API для управления флагами

🌟 Постепенный запуск: Позволяет запускать новые функции для ограниченного числа пользователей, а затем включать для всех

🌟 Источники конфигурации: Флаги можно настраивать через appsettings.json, Azure App Configuration или внешние сервисы

🌟 Фильтры функций: Условия для активации флагов (например, на основе ролей пользователей или окружения)


💡 Пример: Вы можете включить новую функцию только для 10% пользователей и анализировать, как они реагируют на изменения, прежде чем развернуть её глобально

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
openai-dotnet — библиотека, которая предоставляет .NET SDK для работы с OpenAI API. Она позволяет разработчикам легко интегрировать модели OpenAI в приложения, написанные на языке C# и других языках платформы .NET

🌟 Библиотека поддерживает взаимодействие с различными возможностями OpenAI, такими как GPT и другие инструменты, предлагаемые через их API

🔐 Лицензия: MIT

▪️Github

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Создание GraphQL-клиента на .NET с использованием Rider и StrawberryShake может оказаться сложной задачей без хорошего руководства.

Этот материал будет полезен тем, кто испытывает трудности с определением схем, написанием запросов и интеграцией GraphQL в приложения на .NET.

Далее мы рассмотрим поэтапный процесс настройки среды разработки, определения схем, генерации клиентского кода и интеграции всех компонентов в проект.

Для начала следует ознакомиться с плагином GraphQL в Rider и фреймворком StrawberryShake.

атем следуйте шагам по настройке, описанным ниже.

📌 Подробнее

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Всем привет!
Наша международная продуктовая компания в сфере IoT ищет опытного C# разработчика для работы над проектом по созданию 3D digital twins для промышленных компаний. Мы разрабатываем передовые платформы для управления и мониторинга сетей, интегрирующие сбор данных в реальном времени, автоматизацию и аналитику. Работа полностью удалённая (не из РФ и РБ).

🛠 Стек: C#, .NET Core, REST API, WebSockets, MongoDB, SNMP
💼 Зарплата: $7000-9000
👥 Команда: небольшая и плоская, опытные разработчики со стажем 10+ лет.

Требуется опыт глубокой работы с протоколом SNMP и кроссплатформенной разработкой (Windows, Linux).

Пока на практике, нам встречаются либо опытные C# разработчики без опыта SNMP, либо сильные специалисты со знанием SNMP, но с другим стэком технологий (обычно С++, Java).
Если вы имеете глубокие знания и обширный опыт с C# и SNMP - будем очень рады познакомиться и пообщаться. Если вы знаете таких специалистов - будем признательны за рекомендацию, готовы обсудить бонус в случае найма такого специалиста к нам в команду

Если интересно — пишите в личные сообщения @dariapeopleverywhere!
🖥 Новый способ создания блокировок в .NET 9: Lock(). Это упрощает код и избавляет от необходимости вручную управлять блокировками в finally

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Проверка пагинации в .NET: с Entity Framework и без него

💡 Пагинация относится к процессу разделения большого набора данных на более мелкие, управляемые фрагменты, которые могут быть извлечены и отображены пошагово. Этот метод имеет важное значение для повышения производительности приложения и удобства пользователя, особенно при работе с большими наборами данных

🔗 Читать: *клик*

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Wexflow — это мощная платформа для автоматизации рабочих процессов с открытым исходным кодом. Она позволяет автоматизировать задачи, такие как обработка файлов, отправка уведомлений, резервное копирование, интеграция с различными API и многое другое

🌟 Wexflow обладает рядом функций, включая интеграцию с базами данных и облачными сервисами, поддержку различных форматов данных и протоколов, а также собственным приложением для Android!

🔐 Лицензия: MIT

🖥 Github

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
2025/06/16 07:51:42
Back to Top
HTML Embed Code: